perm filename VERTI.SAI[PUB,TES] blob
sn#129313 filedate 1974-11-07 generic text, type T, neo UTF8
00100 BEGOF("VERTI")
00200
00300 COMMENT
00400
00500 Skipping vertically down the page. This is short now, but it is
00600 expected to grow with special features for high-resolution devices ;
00700
00800 ;
00900
01000 PROCEDURES
00100 PUBLIC SIMPLE PROCEDURE VERTI! ;$"#
00200 BEGIN "VERTI!"
00300 SPREADM ← PREFMODE ;
00310 LEADNM ← LEADFM ← 0 ; TES 11/2/74 ;
00320 MLEADNM ← MLEADFM ← MSPREADM ← MILLVERTIDEFAULT ; TES 11/2/74 ;
00400 END "VERTI!" ;
00100 PUBLIC SIMPLE BOOLEAN PROCEDURE DIMENSIONED(INTEGER DEFAULT; REFERENCE INTEGER K) ;$"#
00200 BEGIN "DIMENSIONED"
00300 K ← CVD(E("0"+DEFAULT, NULL)) ;
00400 IF ITS(MILLS) OR ITS(MILL) THEN BEGIN PASS ; RETURN(TRUE) END ;
00500 IF ITS(INCHES) OR ITS(INCH) THEN BEGIN PASS ; K←1000*K ; RETURN(TRUE) END ;
00600 IF ITS(LINE) OR ITS(LINES) THEN PASS ;
00700 RETURN(FALSE) ;
00800 END "DIMENSIONED" ;
00100 PUBLIC SIMPLE PROCEDURE DPREFACE ;$"#
00200 BEGIN "DPREFACE" TES 11/2/74 ;
00300 INTEGER L, M ;
00400 DBREAK ;
00500 PASS ;
00600 IF NOT ON THEN BEGIN DIMENSIONED(0, L) ; RETURN END ;
00700 M ← ABS(MILLVERTI) ;
00750 IF DIMENSIONED(0, L) THEN BEGIN M ← L ; L ← 0 END ;
00800 IF NOFILL THEN BEGIN MLEADNM ← M ; LEADNM ← L END
00900 ELSE BEGIN MLEADFM ← M ; LEADFM ← L END ;
01000 END "DPREFACE" ;
00100 PUBLIC RECURSIVE PROCEDURE DSKIP(BOOLEAN GRPSKIP) ;$"#
00200 BEGIN
00300 BOOLEAN GM ;
00400 DBREAK ; PASS ;
00500 IF GRPSKIP THEN BEGIN GM←GROUPM ; GROUPM ←1 ; END ;
00600 IF ITS(TO) THEN
00700 BEGIN "SKIP TO"
00800 DAPART ; PASS ;
00900 IF ITS(COLUMN) THEN BEGIN PASS; TOCOLUMN(CVD(E(CVS(COL+1),NULL))) END
01000 ELSE BEGIN IF ITS(LINE) THEN PASS ; TOLINE(CVD(E("1", NULL))) END ;
01100 END "SKIP TO"
01200 ELSE BEGIN
01250 IF THISTYPE>INTERNTYPE OR THISTYPE=-TERQ OR NEXTSCH(←) OR NEXTSCH(:) THEN
01300 SKIPLINES(1)
01310 ELSE IF DIMENSIONED(1, K) THEN
01315 BEGIN
01317 ASSUREAREA ;
01320 IF GRPSKIP THEN MILLGSKIP(AREAIXM) ← MILLGSKIP(AREAIXM) + K
01330 ELSE MILLSKIP(AREAIXM) ← MILLSKIP(AREAIXM) + K
01335 END
01340 ELSE SKIPLINES(K) ;
01370 END ;
01400 IF GRPSKIP AND GM = 0 THEN DAPART ;
01500 END "DSKIP" ;
00100 PUBLIC SIMPLE PROCEDURE DSPACING ;$"#
00200 BEGIN "DSPACING" TES 11/2/74 ;
00300 INTEGER L, M ;
00400 PASS ;
00500 IF NOT ON THEN BEGIN DIMENSIONED(0, L) ; RETURN END ;
00600 M ← ABS(MILLVERTI) ;
00650 IF DIMENSIONED(0, L) THEN BEGIN M ← L ; L ← 0 END ;
00700 MSPREADM ← M ;
00800 SPREADM ← L + 1 ;
00900 END "DSPACING" ;
00100 PUBLIC RECURSIVE PROCEDURE SKIPLINES(INTEGER HMLINES) ;$"#
00200 IF ON THEN
00300 BEGIN "SKIPLINES"
00400 ASSUREAREA ;
00500 IF HMLINES > 0 THEN
00600 IF GROUPM=0 THEN FIND!ROOM(-HMLINES, 0, COL, LINE, 0)
00700 ELSE BEGIN "GROUP SKIP"
00800 INTEGER I ;
00900 FIND!ROOM(0, HMLINES, COL, LINE, 0) ;
01000 IF NOT GLINEM THEN GLINEM ← OLX + 1 ;
01050 IF COL>COLS AND LINE=0 THEN FTGP2 ← HMLINES TES 11/2/74;
01087 ELSE
01093 BEGIN
01100 FOR I ← 1 THRU HMLINES DO AA[COL, LINE+I] ←
01200 NEWBLANK(IF GLINEM=0 AND I=1 THEN ABV ELSE ABV!BLW) ;
01300 LINE ← LINE + HMLINES ;
01350 END ;
01400 END "GROUP SKIP" ;
01500 END "SKIPLINES" ;
00100 PUBLIC RECURSIVE PROCEDURE TOLINE(INTEGER LINENO) ;$"#
00200 IF ON THEN
00300 BEGIN "TOLINE"
00400 ASSUREAREA ;
00500 IF LINENO < LINE THEN
00600 IF COL = COLS THEN
00700 BEGIN NEXTPAGE ; IF LINENO>1 THEN OPENAREA(AREAIXM) END
00800 ELSE BEGIN COL ← COL+1 ; LINE ← 0 ; END ;
00900 IF LINENO=1 THEN LINE←1 ELSE FIND!ROOM(0, 0, COL, LINENO-1, 0) ;
01000 END "TOLINE" ;
00100 FINISHED
00200
00300 ENDOF("VERTI")